package org.example.controller;

import org.example.service.UserService;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.stereotype.Controller;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

/**
 * Created with IntelliJ IDEA 2023.
 * Description:
 * User: homechen
 * Date: 2024-03-31
 * Time: 22:59
 */
public class BeanLifeController implements BeanNameAware {
    @Resource
    private UserService userService;

    /**
     * 执行各种通知
     */
    @Override
    public void setBeanName(String s) {
        System.out.println("执行各种通过：" + s);
    }

    // 执行前置方法
    public void initMethod() {
        System.out.println("执行 init-Method 前置方法");
    }

    // 改进后的前置方法  DI 注入在 执行前置方法中调用
    @PostConstruct
    public void PostConstruct() {
        userService.UserService();
        System.out.println("执行 PostConstruct 前置方法");
    }

    /**
     * 销毁前的执行方法
     */
    @PreDestroy
    public void PreDestory() {
        System.out.println("执行 PreDestory 销毁方法");
    }

    public void use() {
        System.out.println("使用 bean 执行 use 方法");
    }
}
